package com.bbs.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.bbs.dto.AcceptNewFriendRequest;
import com.bbs.dto.ApplyNewFriendRequest;
import com.bbs.dto.FriendGroupDto;
import com.bbs.dto.UpdateFriendInfoRequest;
import com.bbs.pojo.UserFriendship;
import com.bbs.pojo.UserPrincipal;

import java.util.List;

public interface UserFriendService extends IService<UserFriendship> {
    /**
     * 获取按好友分组以及每组中的好友
     */
    List<FriendGroupDto> getGroupedFriendList(String userId);

    /**
     * 获取所有分组的名称列表
     */
    List<String> getFriendGroupNames(String userId);

    /**
     * 检查两个用户是否存在好友关系
     */
    boolean checkIsFriend(String userId1, String userId2);

    /**
     * 解除双向的好友关系
     */
    boolean deleteFriend(String userId1, String userId2);

    /**
     * 更新朋友分组信息（不可更新属主）
     */
    boolean renameFriendGroup(String userId, String friendGroupName, String newFriendGroupName);

    /**
     * 更新好友信息（分组）
     */
    boolean updateFriendInfo(String userId, UpdateFriendInfoRequest updateFriendInfoRequest);

    /**
     * 申请加为好友。发送申请消息。
     */
    boolean applyNewFriend(UserPrincipal applicant, ApplyNewFriendRequest applyNewFriendRequest);

    /**
     * 接收好友申请。接收申请消息。
     */
    boolean acceptNewFriend(String userId, AcceptNewFriendRequest acceptNewFriendRequest);

    /**
     * 拒绝好友申请。并向申请者发送拒绝提示。
     */
    boolean rejectNewFriend(String userId, String messageId);
}
